#include"user_yh.h"

enum {
       v1,
       v2,
       v3
};

int cnt_user_password;
bool yes_or_no(void)
{
	
	for(;;)
    {
		char cmd = getch();
		if('y' == cmd || 'Y' == cmd || 'n' == cmd || 'N' == cmd)
        {
			printf("%c\n",cmd);
			return 'n'==cmd || 'N'==cmd;
        }
     }
}

//会员登录//失败返回0，成功返回1，退出返回2。
int user_up_password(void)
{
	char id_[11];
	char password_[7];
   
	printf("请输入账号：");
	get_str(id_,sizeof(id_));
	cnt_user_password = user_id_query(id_);
	while(-1==cnt_user_password)
	{ 
		show_msg("\n未找到该用户！\n",0.1);
	    show_msg("继续购物请按1\n重新输入请按2\n退出请按3\n",0.1);
	    switch(get_cmd('1','3'))
	    {
			case '1': return 1;
         	case '2': break;
         	case '3': return v3;
        }
        printf("请输入账号：");
	    get_str(id_,sizeof(id_));
	    cnt_user_password = user_id_query(id_);  
    }

    printf("请输入密码：");
    get_passwd(password_,sizeof(password_));
	while(strcmp(password_,user[cnt_user_password].password))
    {
     	printf("你输入的密码错误，请重新输入"); 
        show_msg("(按1退出，按2继续登录)",0.7); 
        switch(get_cmd('1','2'))
        {
           case '1':return v3;
           case '2':break;
        }
        printf("请输入密码：");
        get_passwd(password_,sizeof(password_)); 
    }
    return v2;
}



 

//收银函数
void user_yh_ml(void)
{
	int flag;
	char id[11];
	double money_sum=0;	
	int cnt_shop_buy[50];//记录购买的商品在库存里的的下标
    //购物车
    Shop shop_buy[50];   
    int cnt=0;

	show_msg("是否要登入会员(按1登入会员，按2继续购物)?\n",0.7);
    switch(get_cmd('1','2'))
    {
		case '1':flag=user_up_password();
                 if(v3==flag)
                 {
                     return;
                 }  
 				 break;
        case '2':break;
    }
	
  
    system("clear");
	 printf("                    购物车         总价：%.3lf\n====================================================\n",money_sum);
	printf("====================================================\n");
		//输入商品id
        printf("请输入商品id：");
        get_str(id,sizeof(id));
        //查找商品id的下标
        int index = shop_id_query(id);
        //查询是否存在该商品
        if(-1 == index)
        {
            show_msg("商品不存在!(按1退出，按2重新输入)",0.8);       
	     	switch(get_cmd('1','2'))
	   	    {
		    	case '1': return;
                case '2':
                    printf("请输入商品id：");
                      get_str(id,sizeof(id));
                      index = shop_id_query(id); break;
            }
        }
        
        //把购买的商品信息，存入购物车中。
        shop_buy[cnt]= shop[index];    
		printf("请输入购买商品的数量：");
        scanf("%d",&shop_buy[cnt].num);
		
        //消除多余的'\0' 
		getchar();
		if(shop_buy[cnt].num>shop[index].num)
		{
			show_msg("您购买的商品数量已超过库存,请重新输入！\n",1);
			printf("请输入购买商品的数量：");
                        scanf("%d",&shop_buy[cnt].num);
		}
		
        //该商品的总价。
		shop_buy[cnt].price=shop[index].price*shop_buy[cnt].num;
		money_sum+=shop_buy[cnt].price;

        //记录在库存中的下标
		cnt_shop_buy[cnt]=index;
        cnt++;
          
	    system("clear");
        printf("                    购物车         总价：%.3lf元\n====================================================\n",money_sum);
		for(int i=0;i<cnt;i++)
        {
			printf("名称：%s\t数量：%d件  价格%.3lf元",
                        shop_buy[i].name,
                        shop_buy[i].num,
                        shop_buy[i].price);
            printf("\n");
        }
        printf("====================================================\n");

//会员付款。
if(v2==flag)
{
    int level=user[cnt_user_password].vip/1000;
    
    if(level>10) 
    {
        level=10;
    }
    money_sum=money_sum*(99-level*2)/100;
    printf("尊贵的会员，您的会员等级为%d级，折扣为%d折\n您需要付款:%.3lf元\n",
               level,
               99-level*2,
               money_sum);            
}
else
{
    printf("\n您需要付款:%.3lf元\n",money_sum);
    
}
   printf("是否支付(y/n)?");
   if(yes_or_no())
		{
			return;
        }


    
    printf("请输入一个付款账号：");
    //存储付款账号
    get_str(pay[cnt_time].pay_phone,sizeof(pay[cnt_time].pay_phone));
	show_msg("付款成功！",1);
	//减少库存
	for(int t=0;t<cnt;t++)
	{  
		shop[cnt_shop_buy[t]].num-=shop_buy[t].num;
    }
    //判断是否为会员
    if(v2==flag)
    {
		//获得积分 
        user[cnt_user_password].vip+=money_sum;
    }
    //存储收款账号
    strcpy(pay[cnt_time].collection_phone, manager.number);
    //存储支付的金额
    pay[cnt_time].money=money_sum;
    //记录付款时间
    time_t t;
	time(&t);
    pay_time=gmtime(&t);
	pay[cnt_time].year=pay_time->tm_year;
	pay[cnt_time].mon= pay_time->tm_mon;
	pay[cnt_time].day= pay_time->tm_mday;
	pay[cnt_time].hour=pay_time->tm_hour;
	pay[cnt_time].min= pay_time->tm_min;
	pay[cnt_time].sec= pay_time->tm_sec;
	cnt_time++;
}
